﻿using FBroSharp;
using FBroSharp.DataType;
using FBroSharp.VIP;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;

namespace wss测试
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            //获取当前设备机器码，机器码是给作者生成VIP注册码用的
            //Console.WriteLine(FBroSharpVIPControl.GetMachineCode());

            //注册注册码，注册成功后对应的VIP功能才会生效
            FBroSharpVIPGlobalControl.SetAuthorizationCode("46D8442ED954CE4ADDFAA8FE12AD7901");

            FBroSharpInitSet set = new FBroSharpInitSet
            {
                //设置缓存目录
                cache_path = Directory.GetCurrentDirectory() + "\\Cache\\CachePath\\",

                //设置用户目录
                user_data_path = Directory.GetCurrentDirectory() + "\\Cache\\UserPath\\",

                //设置根缓存目录，必须是上面缓存目录的父目录，否则采用独立缓存可能会失效
                root_cache_path = Directory.GetCurrentDirectory() + "\\Cache\\",

                //启用事件消息循环
                multi_threaded_message_loop = true,

                //wss因为是在渲染进程中，如果不是单独开发渲染经常实现wss拦截功能，这里就不设置，直接使用本身作为渲染进程，就可以不用单独开发子进程，但也要注意已经是多进程开发，
                //调试采用单进程模式才能调试渲染相关，或者也可以附加所有进程进行调试，单进程只能调试使用，正式环境不建议使用，原因请自行百度谷歌单进程模式和多进程模式的区别
                //设置执行子进程，不设置他会默认以当前进程作为子进程
                ///browser_subprocess_path = Directory.GetCurrentDirectory() + "\\FBroSubprocess.exe",

                //本地化语言
                locale = "zh-CN",

                //启用进程间通信，因为主进程要和渲染进程通信，所有需要启用，这里也可以不用这个，用cef自带的进程通信
                enableprocessmessage = true
            };

            //创建初始化事件
            InitEvent init_event = new InitEvent();

            //执行初始化
            if (!FBroSharpInitControl.InitPro(set, init_event))
                return;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

            //结束关闭释放框架
            FBroSharpInitControl.Shutdown(true);
        }
    }
}
